import axios from 'axios';

import {ElMessage} from 'element-plus'
import {useTokenStore} from '@/stores/token.js'
import router from '@/router'

const baseURL = '/api';//跨域
const instance = axios.create({baseURL})

//添加请求拦截器
instance.interceptors.request.use((config) => {
    //请求前的回调
    //添加token
    const tokenStore = useTokenStore();

    //判断有没有token
    if (tokenStore.token) {
        config.headers.Authorization = `Bearer ${tokenStore.token}`
    }
    return config;
}, (err) => {
    //请求错误的回调
    Promise.reject(err)
})

//添加响应拦截器
instance.interceptors.response.use(result => {
    //判断业务状态码
    //操作成功
    if (result.data.code === 0) {
        return result.data;
    }
    //操作失败
    if (result.data.message.length < 20) {
        ElMessage.error(result.data.message)
    }
    //异步操作的状态转换为失败
    return Promise.reject(result)

}, err => {
    //判断响应状态码,如果为401,则证明未登录,提示请登录,并跳转到登录页面
    if (err.response.status === 401) {
        ElMessage.error('请先登录')
        router.push('/login')
    } else {
        ElMessage.error('服务器异常')
    }

    return Promise.reject(err);//异步的状态转化成失败的状态
})

export default instance;